﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Odense_Kommune.Interfaces;

namespace Odense_Kommune.Model
{
    /// <summary>
    /// Klasse skrevet af Søren Eg Pedersen & Mads
    /// </summary>
    public class BorgerCollection : IBorgerCol
    {
        #region Variabler
        private List<IBorger> _listeafborgere;
        #endregion

        #region Konstruktør
        public BorgerCollection()
        {
            _listeafborgere = new List<IBorger>();
            ListeafBorgere.Add(new Borger("Thorstein", 45, "Fjols.", DateTime.Now, "Mand", DateTime.Now));
            ListeafBorgere.Add(new Borger("Jan", 89, "Fin fyr.", DateTime.Now, "Kvinde", DateTime.Now));
            ListeafBorgere.Add(new Borger("Jonna", 60, "Fjols.", DateTime.Now, "Kvinde", DateTime.Now));
            ListeafBorgere.Add(new Borger(140789, 77, "Ulla", "Jespersen", "Howdy Dude", DateTime.Now, "kvinde", DateTime.Now));
            ListeafBorgere.Add(new Borger(1467789, 77, "Betina", "Pespersen", "Howdy dudet", DateTime.Now, "kvinde", DateTime.Now));
        }
        #endregion

        #region Metoder
        public void OpretBorger(long cpr, int alder, string fornavn, string efternavn,
                                string kommentar, DateTime datostart, string køn, DateTime forventetafslutning)
        {
            foreach (var item in ListeafBorgere)
            {
                if (item.CPR == cpr)
                    throw new Exception("En borger med CPR-nummeret: " + cpr + " findes allerede i systemet.");
                else if (item.Fornavn == fornavn && item.Efternavn == efternavn)
                    throw new Exception("En borger med navnet: " + fornavn + " " + efternavn + " findes allerede i systemet.");
            }
            IBorger tempborger = new Borger(cpr, alder, fornavn, efternavn, kommentar, datostart, køn, forventetafslutning);
            ListeafBorgere.Add(tempborger);
        }

        public void OpretBorger(string kaldenavn, int alder, string kommentar, DateTime datostart, string køn, DateTime forventetafslut)
        {
            /*
            foreach (var item in ListeafBorgere)
            {
                if (item.Kaldenavn == kaldenavn)
                    throw new Exception("En borger med kaldenavnet: " + kaldenavn + " findes allerede i systemet.");
            }
             */
            IBorger tempborger = new Borger(kaldenavn, alder, kommentar, datostart, køn, forventetafslut);
            ListeafBorgere.Add(tempborger);
        }

        public void SletBorger(IBorger b) { ListeafBorgere.Remove(b); }

        public IBorger RedigerBorger(IBorger b, long cpr, int alder, string fornavn, string efternavn,
                                    string kommentar, string køn, DateTime forventetafslut)
        {
            b.CPR = cpr;
            b.Alder = alder;
            b.Fornavn = fornavn;
            b.Efternavn = efternavn;
            b.Kommentar = kommentar;
            b.Køn = køn;
            b.DatoForventetSlut = forventetafslut.ToString();
            return b;
        }
        #endregion

        #region Egenskaber
        public List<IBorger> ListeafBorgere { get { return _listeafborgere; } }
        #endregion
    }
}
